﻿
namespace AdventureWorksDomainService
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web.Ria;
    using System.Web.Ria.Data;
    using System.Web.DomainServices;
    using System.Data.Objects.DataClasses;
    using System.Data;


    // The MetadataTypeAttribute identifies ProductMetadata as the class
    // that carries additional metadata for the Product class.
    [MetadataTypeAttribute(typeof(Product.ProductMetadata))]
    public partial class Product
    {

#pragma warning disable 649    // temporarily disable compiler warnings about unassigned fields

        // This class allows you to attach custom attributes to properties
        // of the Product class.
        //
        // For example, the following marks the Xyz property as a
        // required field and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression(“[A-Z][A-Za-z0-9]*”)]
        //    [StringLength(32)]
        //    public string Xyz;
        internal sealed class ProductMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ProductMetadata()
            {
            }

            public int ProductID;

            public string Name;

            public string ProductNumber;

            public bool MakeFlag;

            public bool FinishedGoodsFlag;

            public string Color;

            public short SafetyStockLevel;

            public short ReorderPoint;

            public Decimal StandardCost;

            public Decimal ListPrice;

            public string Size;

            public Nullable<Decimal> Weight;

            public int DaysToManufacture;

            public string ProductLine;

            public string Class;

            public string Style;

            public DateTime SellStartDate;

            public Nullable<DateTime> SellEndDate;

            public Nullable<DateTime> DiscontinuedDate;

            public Guid rowguid;

            public DateTime ModifiedDate;

            public EntityCollection<BillOfMaterials> BillOfMaterials;

            public EntityCollection<BillOfMaterials> BillOfMaterials1;

            public ProductModel ProductModel;

            public ProductSubcategory ProductSubcategory;

            public UnitMeasure UnitMeasure;

            public UnitMeasure UnitMeasure1;

            public EntityCollection<ProductCostHistory> ProductCostHistory;

            public EntityCollection<ProductDocument> ProductDocument;

            public EntityCollection<ProductInventory> ProductInventory;

            public EntityCollection<ProductListPriceHistory> ProductListPriceHistory;

            public EntityCollection<ProductProductPhoto> ProductProductPhoto;

            public EntityCollection<ProductReview> ProductReview;

            public EntityCollection<ProductVendor> ProductVendor;

            public EntityCollection<PurchaseOrderDetail> PurchaseOrderDetail;

            public EntityCollection<ShoppingCartItem> ShoppingCartItem;

            public EntityCollection<SpecialOfferProduct> SpecialOfferProduct;

            public EntityCollection<TransactionHistory> TransactionHistory;

            public EntityCollection<WorkOrder> WorkOrder;

            public EntityState EntityState;
        }

#pragma warning restore 649    // re-enable compiler warnings about unassigned fields
    }

    // The MetadataTypeAttribute identifies ProductCategoryMetadata as the class
    // that carries additional metadata for the ProductCategory class.
    [MetadataTypeAttribute(typeof(ProductCategory.ProductCategoryMetadata))]
    public partial class ProductCategory
    {

#pragma warning disable 649    // temporarily disable compiler warnings about unassigned fields

        // This class allows you to attach custom attributes to properties
        // of the ProductCategory class.
        //
        // For example, the following marks the Xyz property as a
        // required field and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression(“[A-Z][A-Za-z0-9]*”)]
        //    [StringLength(32)]
        //    public string Xyz;
        internal sealed class ProductCategoryMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ProductCategoryMetadata()
            {
            }

            public int ProductCategoryID;

            public string Name;

            public Guid rowguid;

            public DateTime ModifiedDate;

            public EntityCollection<ProductSubcategory> ProductSubcategory;

            public EntityState EntityState;
        }

#pragma warning restore 649    // re-enable compiler warnings about unassigned fields
    }
}
